// pages/share/share.js
const app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    totalHeaderHeightall: "",
    // 分享图片临时路径
    shareImagePath: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.setData({
      totalHeaderHeightall: app.globalData?.totalHeaderHeight
    })

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 保存海报到相册
   */
  savePoster: function () {
    wx.showLoading({
      title: '保存中...',
    });

    // 创建canvas上下文
    const query = wx.createSelectorQuery();
    query.select('#posterCanvas').fields({
      node: true,
      size: true
    }).exec((res) => {
      const canvas = res[0].node;
      const ctx = canvas.getContext('2d');

      // 设置canvas尺寸
      const dpr = wx.getSystemInfoSync().pixelRatio;
      canvas.width = 750 * dpr;
      canvas.height = 1624 * dpr;
      ctx.scale(dpr, dpr);

      // 创建图片对象
      const posterImg = canvas.createImage();
      posterImg.src = 'https://exam-1304576422.cos.ap-guangzhou.myqcloud.com/static/longtu.png';

      posterImg.onload = () => {
        // 绘制海报图片
        ctx.drawImage(posterImg, 0, 0, 750, 1624);

        // 添加二维码
        const qrCodeImg = canvas.createImage();
        qrCodeImg.src = 'https://exam-1304576422.cos.ap-guangzhou.myqcloud.com/static/erweimaimg.png';

        qrCodeImg.onload = () => {
          // 绘制二维码到海报上
          ctx.drawImage(qrCodeImg, 507, 1310, 203, 203);

          // 添加文字信息
          ctx.fillStyle = '#FFFFFF';
          ctx.font = '24px SimSun';
          ctx.textAlign = 'center';
          ctx.fillText('ID: 70002732', 608.5, 1540);
          ctx.fillText('西南医大', 608.5, 1570);

          // 将canvas转为临时图片
          wx.canvasToTempFilePath({
            canvas: canvas,
            success: (res) => {
              // 保存图片到相册
              wx.saveImageToPhotosAlbum({
                filePath: res.tempFilePath,
                success: () => {
                  wx.hideLoading();
                  wx.showToast({
                    title: '保存成功',
                    icon: 'success'
                  });
                },
                fail: (err) => {
                  wx.hideLoading();
                  console.error('保存失败:', err);

                  // 如果是因为用户拒绝授权，引导用户授权
                  if (err.errMsg.indexOf('auth deny') >= 0) {
                    wx.showModal({
                      title: '授权提示',
                      content: '需要您授权保存图片到相册',
                      success: (res) => {
                        if (res.confirm) {
                          wx.openSetting();
                        }
                      }
                    });
                  } else {
                    wx.showToast({
                      title: '保存失败',
                      icon: 'none'
                    });
                  }
                }
              });
            },
            fail: (err) => {
              wx.hideLoading();
              console.error('canvas转图片失败:', err);
              wx.showToast({
                title: '生成图片失败',
                icon: 'none'
              });
            }
          });
        };
      };
    });
  },

  /**
   * 分享海报（直接分享图片）
   */
  sharePoster: function () {
    wx.showLoading({
      title: '生成海报中...',
    });

    // 创建canvas上下文，生成海报图片（海报+二维码组合）
    const query = wx.createSelectorQuery();
    query.select('#posterCanvas').fields({
      node: true,
      size: true
    }).exec((res) => {
      const canvas = res[0].node;
      const ctx = canvas.getContext('2d');

      // 设置canvas尺寸
      const dpr = wx.getSystemInfoSync().pixelRatio;
      canvas.width = 750 * dpr;
      canvas.height = 1624 * dpr;
      ctx.scale(dpr, dpr);

      // 创建图片对象
      const posterImg = canvas.createImage();
      posterImg.src = 'https://exam-1304576422.cos.ap-guangzhou.myqcloud.com/static/longtu.png';

      posterImg.onload = () => {
        // 绘制海报图片
        ctx.drawImage(posterImg, 0, 0, 750, 1624);

        // 添加二维码
        const qrCodeImg = canvas.createImage();
        qrCodeImg.src = 'https://exam-1304576422.cos.ap-guangzhou.myqcloud.com/static/erweimaimg.png';

        qrCodeImg.onload = () => {
          // 绘制二维码到海报上
          ctx.drawImage(qrCodeImg, 507, 1310, 203, 203);

          // 添加文字信息
          ctx.fillStyle = '#FFFFFF';
          ctx.font = '24px SimSun';
          ctx.textAlign = 'center';
          ctx.fillText('ID: 70002732', 608.5, 1540);
          ctx.fillText('西南医大', 608.5, 1570);

          // 将canvas转为临时图片
          wx.canvasToTempFilePath({
            canvas: canvas,
            success: (res) => {
              wx.hideLoading();

              // 保存临时图片路径到页面数据
              this.setData({
                shareImagePath: res.tempFilePath
              });

              // 显示图片分享选项
              this.showImageShareOptions();
            },
            fail: (err) => {
              wx.hideLoading();
              console.error('canvas转图片失败:', err);
              wx.showToast({
                title: '生成海报失败',
                icon: 'none'
              });
            }
          });
        };
      };
    });
  },

  /**
   * 显示图片分享选项
   */
  showImageShareOptions: function () {
    // 由于微信小程序的限制，我们提供以下方式分享图片：
    // 1. 保存到相册后手动分享（最通用的方式）
    // 2. 分享到朋友圈（部分机型支持直接分享图片）
    wx.showActionSheet({
      itemList: ['保存到相册', '分享到朋友圈'],
      success: (res) => {
        if (res.tapIndex === 0) {
          // 保存到相册（这是最可靠的分享图片的方式）
          this.saveImageToAlbumAndShare();
        } else if (res.tapIndex === 1) {
          // 尝试直接分享到朋友圈
          this.shareImageToTimeline();
        }
      },
      fail: () => {
        console.log('用户取消了分享操作');
      }
    });
  },

  /**
   * 保存图片到相册并引导用户分享
   */
  saveImageToAlbumAndShare: function () {
    if (!this.data.shareImagePath) {
      wx.showToast({
        title: '海报尚未生成',
        icon: 'none'
      });
      return;
    }

    // 保存图片到相册
    wx.saveImageToPhotosAlbum({
      filePath: this.data.shareImagePath,
      success: () => {
        wx.showModal({
          title: '保存成功',
          content: '海报已保存到相册！\n\n您现在可以：\n1. 打开微信聊天\n2. 点击"+"号\n3. 选择"相册"\n4. 找到并发送这张海报图片',
          showCancel: false,
          confirmText: '我知道了'
        });
      },
      fail: (err) => {
        console.error('保存到相册失败:', err);
        if (err.errMsg.indexOf('auth deny') >= 0) {
          wx.showModal({
            title: '需要授权',
            content: '请授权保存图片到相册，以便分享海报',
            success: (res) => {
              if (res.confirm) {
                wx.openSetting();
              }
            }
          });
        } else {
          wx.showToast({
            title: '保存失败',
            icon: 'none'
          });
        }
      }
    });
  },

  /**
   * 尝试直接分享图片到朋友圈
   */
  shareImageToTimeline: function () {
    if (!this.data.shareImagePath) {
      wx.showToast({
        title: '海报尚未生成',
        icon: 'none'
      });
      return;
    }

    // 尝试使用微信的分享到朋友圈API（只分享图片）
    if (wx.shareToTimeline) {
      wx.shareToTimeline({
        // 对于朋友圈分享，imageUrl将作为主要内容
        title: '', // 不设置标题，让图片成为焦点
        query: '', // 不传递页面参数
        imageUrl: this.data.shareImagePath, // 使用生成的海报图片
        success: () => {
          wx.showToast({
            title: '分享成功',
            icon: 'success'
          });
        },
        fail: (err) => {
          console.error('分享到朋友圈失败:', err);
          // 失败时回退到保存到相册方案
          wx.showModal({
            title: '分享失败',
            content: '直接分享失败，是否保存到相册后手动分享？',
            success: (res) => {
              if (res.confirm) {
                this.saveImageToAlbumAndShare();
              }
            }
          });
        }
      });
    } else {
      // 如果API不可用，直接提示保存到相册
      wx.showModal({
        title: '版本不支持',
        content: '当前微信版本不支持直接分享图片，建议保存到相册后分享',
        success: (res) => {
          if (res.confirm) {
            this.saveImageToAlbumAndShare();
          }
        }
      });
    }
  },

  /**
   * 由于我们专注于图片分享，不再提供常规的小程序分享
   * 因此这些方法将返回最小配置，引导用户使用我们的图片分享功能
   */
  onShareAppMessage: function () {
    // 不推荐使用常规分享，返回简单配置
    return {
      title: '请使用页面内的分享功能',
      path: '/pages/share/share',
      imageUrl: '' // 不提供图片，引导用户使用保存图片功能
    };
  },

  onShareTimeline: function () {
    // 不推荐使用常规分享，返回简单配置
    return {
      title: '请使用页面内的分享功能',
      query: 'page=share',
      imageUrl: '' // 不提供图片
    };
  }
})